A distributed storage system employs multiple storage arrays and serves multiple client computers over a network. In such a system, loads on the storage arrays will vary as demands from the client computers fluctuate. To optimize performance of the storage arrays, loads on the multiple storage arrays are observed and balanced when they become uneven.
Various approaches have been developed to improve the performance of storage arrays. The focus of one approach is storage array reconfiguration. In this approach, the storage array is reconfigured to better serve the applications running on it. Another approach is storage array performance modeling, where the storage arrays are modeled in terms of their performance. The goal is to create a model, which accurately describes the performance of the storage arrays. Given such a model, various “what if” scenarios can be modeled prior to implementation. A third approach implements block level migrations. The idea here is carry out block level migrations within a storage array or across multiple storage arrays to improve performance.
In virtualized computer systems, in which disk images of virtual machines are stored in the storage arrays, disk images of virtual machines are migrated between storage arrays as a way to balance the loads across the storage arrays. For example, the Storage VMotion™ product that is available from VMware Inc. of Palo Alto, Calif. allows disk images of virtual machines to be migrated between storage arrays without interrupting the virtual machine whose disk image is being migrated or any applications running inside it. However, the usage so far has been mostly manual and based on observations of loads on the storage arrays and there is a need for automating the task of identifying what to move and where.